package com.plian.system.service.qg.subsidiary;

import com.alibaba.fastjson.JSONObject;
import com.plian.system.dto.qg.subsidiary.SubsidiaryMixedReformDTO;
import com.plian.system.entity.qg.subsidiary.SubsidiaryMixedReform;
import com.plian.system.model.R;
import com.plian.system.mybatis.base.BaseService;
import com.plian.system.vo.qg.subsidiary.SubsidiaryHistoryVO;
import com.plian.system.vo.qg.subsidiary.SubsidiaryMixedReformVO;
import com.plian.system.vo.report.ReportReturnVO;

import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.util.List;

/**
 * 子企业混合所有制改革进展 服务类
 *
 * @author jianglei
 * @since 2019-11-05
 */
public interface ISubsidiaryMixedReformService extends BaseService<SubsidiaryMixedReform> {
    /**
     * 根据JSONObject输出excel
     * @param jsonObject json对象
     * @return object
     */
    File exportExcel(JSONObject jsonObject);
    /**

    /**
     * 校验编码
     * @param id
     * @param code
     * @return
     */
    Boolean checkIsExisted(Long id, String code);

    /**
     * 保存前的参数校验
     * @param subsidiaryMixedReform
     * @return
     */
    R checkSubmit(SubsidiaryMixedReform subsidiaryMixedReform);

    /**
     * 子企业混合所有制改革进展统计表
     * @param subsidiaryMixedReformDTO
     * @return
     */
    ReportReturnVO mixedStatistics(SubsidiaryMixedReformDTO subsidiaryMixedReformDTO);

    /**
     * 混合所有制企业统计表
     * @return
     */
    ReportReturnVO enterpriseStatistics(SubsidiaryMixedReformDTO subsidiaryMixedReformDTO);

    /**
     * 引进民营资本信息情况表
     * @return
     */
    ReportReturnVO privateCapitalInfoReport(SubsidiaryMixedReformDTO subsidiaryMixedReformDTO);


    /**
     * 保存或新增,包含子表
     *
     * @param subsidiaryMixedReform
     * @return
     */
    Boolean submit(SubsidiaryMixedReform subsidiaryMixedReform);

    /**
     * 获取detail 包含子表
     * @param subsidiaryMixedReformVO
     * @return
     */
    R<SubsidiaryMixedReformVO> getDetailObj(SubsidiaryMixedReformVO subsidiaryMixedReformVO);

    /**
     * 根据propertyId 查询上级是否填报单据
     * @param propertyId
     * @return
     */
    SubsidiaryMixedReformVO superiorFlag(String propertyId);

    /**
     * 导出详情
     * @param subsidiaryMixedReformVO
     * @param response
     */
    void exportDetailExcel(SubsidiaryMixedReformVO subsidiaryMixedReformVO, HttpServletResponse response);

    /**
     * 混改所有制历史列表
     * @param companyId
     * @return
     */
    List<SubsidiaryHistoryVO> historyList(String companyId);

    /**
     * @Description: //TODO 对接数字宁波
     * @Author: Take-off
     * @Date: 7:24 PM 2023/3/14
     * @Param: [data]
     * @return: java.lang.String
     **/
    String saveMixedreforms(String data);
}
